/*
 * Copyright (c)  2017
 * All rights reserved.
 * ProductInfo.java 2017-09-13 下午7:47
 */

package com.ueboot.weishop.entity.goods;

import com.ueboot.weishop.entity.IDEntity;
import com.ueboot.weishop.entity.setting.AttributeEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;


/**
 * 描述：某个商品的具体属性列表。添加商品时根据类别自动获取商品分类下的属性列表，然后选择要添加的属性项目到这个商品里面。
 * 每一项属性对应多个值。
 * 如机油商品属性如下：
 * 1.粘度
 * 2.容量
 * 3.系列
 *  每个属性有多个属性的值。
 *
 * @author yangkui create on 2017-09-13 下午7:47.
 * @since 1.0
 */
@Data
@NoArgsConstructor
@Entity(name = "WS_GOODS_ATTR")
public class GoodsAttrEntity extends IDEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "WS_GOODS_ATTR")
    @GenericGenerator(name = "WS_GOODS_ATTR", strategy = "enhanced-table", parameters = {
            @org.hibernate.annotations.Parameter(name = "table_name", value = "WS_TABLE_SEQUENCE"),
            @org.hibernate.annotations.Parameter(name = "segment_value", value = "WS_GOODS_ATTR"),
            @org.hibernate.annotations.Parameter(name = "optimizer", value = "pooled") })
    @Column(name = "ID",columnDefinition = "INT(20) COMMENT 'id主键'",length = 20)
    private Long id;


    /**
     * 属性排序，用于页面显示使用。值越大越靠前
     */
    @Column(name = "RANK",columnDefinition = "INT(11) COMMENT '属性排序，用于页面显示使用。值越大越靠前'",length = 11)
    private int rank;

    /**
     * 商品所属类别对应的属性定义。
     */
    @ManyToOne
    @JoinColumn(name="ATTR_ID",columnDefinition = "INT(20) COMMENT '商品属性对应的属性定义'")
    private AttributeEntity attr;
    /**
     * 商品所属类别对应的属性名称，冗余字段。
     */
    @Column(name = "ATTR_NAME",columnDefinition = "VARCHAR(50) COMMENT '属性名称，冗余字段'",length = 50)
    private String attrName;
    /**
     * 属性的值
     */
    @Column(name = "ATTR_VALUE",columnDefinition = "VARCHAR(50) COMMENT '属性的值'",length = 50)
    private String atrValue;

    /**
     * 所属的商品
     */
    @ManyToOne
    @JoinColumn(name="GOODS_INFO_ID",columnDefinition = "INT(20) COMMENT '所属商品'")
    private GoodsInfoEntity goodsInfo;


}